79
class Solution {
    char[] arr;
    boolean[][] flag;
    public boolean exist(char[][] board, String word) {
        arr = word.toCharArray();
        for (int i = 0; i  board.length; i++) {
            for (int j = 0; j  board[0].length; j++) {
                if (board[i][j] == arr[0]) {
                    flag = new boolean[board.length][board[0].length];
                    flag[i][j] = true;
                    if (fun(board, i, j, 1)) {
                        return true;
                    }
                }
            }
        }
        return false;
    }

    public boolean fun(char[][] board, int x, int y, int i) {
        if (i == arr.length) {
            return true;
        }
        int row = x;
        int col = y;
        row++;
        if (row  board.length && flag[row][col] == false && board[row][col] == arr[i]) {
            flag[row][col] = true;
            if (fun(board, row, col, i+1)) {
                return true;
            }
            flag[row][col] = false;
        }
        row--;
        row--;
        if (row = 0 && flag[row][col] == false && board[row][col] == arr[i]) {
            flag[row][col] = true;
            if (fun(board, row, col, i+1)) {
                return true;
            }
            flag[row][col] = false;
        }
        row++;
        col--;
        if (col = 0 && flag[row][col] == false && board[row][col] == arr[i]) {
            flag[row][col] = true;
            if (fun(board, row, col, i+1)) {
                return true;
            }
            flag[row][col] = false;
        }
        col++;
        col++;
        if (col  board[0].length && flag[row][col] == false && board[row][col] == arr[i]) {
            flag[row][col] = true;
            if (fun(board, row, col, i+1)) {
                return true;
            }
            flag[row][col] = false;
        }
        return false;
    }
}
链接：https://ac.nowcoder.com/acm/problem/13591
来源：牛客网

一天zzq主持一项游戏，共n位同学，需要两两同学为一组来上台来玩一项游戏。
但是，众所周知，玩游戏的时候，如果两个人的颜值差距>=m，就会互相嫌弃。
所以，为了游戏能够好玩。在游戏开始前，zzq已经调查了所有n个同学的颜值。
但是现在问题又来了，zzq想知道，最多能凑出多少组同学一起上台？
需注意一人只能出现在一个组中。
输入描述:
多组输入
第一行两个正整数n m（n<=1e5,m<=1e9），意义见描述
第二行有n个由空格分开的正整数xi（xi<=1e9），第i个同学的颜值
输出描述:
每一行输出一个数，表示最多能凑出多少组。
import java.util.Scanner;
import java.util.Arrays;


public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        while(in.hasNextInt()){
            int n = in.nextInt();
            int m = in.nextInt();
            int[] surface = new int[n];

            for (int i = 0; i < n; i++){
                surface[i] = in.nextInt();
            }
            Arrays.sort(surface);
            int count = 0;
            for (int i = 0; i < n-1; i++){
                if (surface[i+1] - surface[i] < m){
                    count++;
                    i++;
                }
            }
            System.out.println(count);
        }
        
    } 
}